
module.exports = grunt => {
    // grunt.initConfig({
    //     // build的值必须为一个对象
    //     // 对象中的每个属性值都是一个目标，除了options
    //     // options中的信息，作为这个任务的配置选项
    //     // 在每个目标中也可以添加options
    //     build: {
    //         options: {
    //             foo: 'bar'
    //         },
    //         obj:{
    //             options: {
    //                 foo: 'baz'
    //             }  
    //         },
    //         css: '1',
    //         js: '2'
    //     }
    // })

    // grunt.registerMultiTask('build', function () {
    //     // 通过options方法，拿到配置选项
    //     console.log(this.options())
    //     // 可以通过target拿到当前执行的目标名称, 通过data拿到所对应的数据
    //     console.log(`target: ${this.target}, data：${this.data}`) 
    //     // 执行：yarn grunt build:css
    //     // 输出：target: css, data：1
    // })



    // initConfig方法接收一个对象形式的参数
    // 对象的键：与任务名称保持一致， 值可以使任意类型的数据
    // grunt.initConfig({
    //     foo: 'bar',
    //     obj: {
    //         bar: 123
    //     }
    // })

    // 在注册任务当中，使用配置属性，通过config方法，获取属性
    // grunt.registerTask('foo', () => {
    //     // config的参数，就是配置方法中定义的属性名
    //     console.log(grunt.config('foo'))  // bar
    //     console.log(grunt.config('obj.bar'))  // 123
    // })



    // grunt.registerTask('bar', '任务描述', () => {
    //     console.log('other task')  
    // })


    // 执行yarn grunt --help后，输出：
    // Available tasks
    //        foo  Custom task.

    //        bar  任务描述

    // 如果任务名称为default，运行的时候就不需要指定任务名称： ：`yarn grunt`
    // 一般使用default映射其他任务，通过第二个参数传入数组任务名的方式

    // grunt.registerTask('default', () => {
    //     console.log('default task')  
    // })

    // grunt.registerTask('default', ['foo', 'bar'])

    //异步任务
    // grunt默认支持同步模式，如果要异步操作，需使用this.async方法得到一个回调函数，在异步操作后调用此函数，标识这个任务已经完成
    // 因为在函数当中需要使用this，就不能使用箭头函数
    // grunt.registerTask('async-task', function () {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('async task working')
    //         done() // 调用回调函数，标识任务已完成
    //     }, 1000)
    // })
}